﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using veterinaria.negocio;
using System.Web.SessionState;

namespace veterinaria.web
{
    public partial class ConsultaPerros : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                cargarDueños();
                cargarRazas();
                cargarGrillaConFiltro();
            }
        }

        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            cargarGrillaConFiltro();
        }

          protected void chbDueño_CheckedChanged(object sender, EventArgs e)
          {
              if (chbDueño.Checked)
                  ddlDueño.Enabled = true;
              else
                  ddlDueño.Enabled = false;
          }

          protected void chbRaza_CheckedChanged(object sender, EventArgs e)
          {
              if (chbRaza.Checked)
                  ddlRaza.Enabled = true;
              else
                  ddlRaza.Enabled = false;
          }

          protected void btnEditar_Click(object sender, EventArgs e)
          {
              if (dgvPerros.SelectedRow != null)
              {
                  int id_hist = (int)dgvPerros.DataKeys[dgvPerros.SelectedRow.RowIndex]["Código"];
                  int idDueño = (int)dgvPerros.DataKeys[dgvPerros.SelectedRow.RowIndex]["IdDueño"];
                  int idRaza = (int)dgvPerros.DataKeys[dgvPerros.SelectedRow.RowIndex]["IdRaza"];
                  string nombre = dgvPerros.SelectedRow.Cells[2].Text.ToString();
                  float peso = float.Parse(dgvPerros.SelectedRow.Cells[4].Text.ToString());
                  float altura = float.Parse(dgvPerros.SelectedRow.Cells[5].Text.ToString());
                  DateTime fecha = DateTime.Parse(dgvPerros.SelectedRow.Cells[7].Text.ToString());

                  Mascota m = new Mascota(id_hist, nombre, peso, altura, fecha, idDueño, idRaza);

                  Session["mascota"] = m;
                  Session["accion"] = "editarMascota";
                  Response.Redirect("ABMPerro.aspx");
              }
              else
              {
                  lblAviso.Text = "Debe elegir una fila de la grilla para poder editarla.";
              }
          }

          protected void btnBorrar_Click(object sender, EventArgs e)
          {
              if (dgvPerros.SelectedRow!=null)
              {
                  int id_hist = (int)dgvPerros.DataKeys[dgvPerros.SelectedRow.RowIndex]["Código"];
                  GestorMascotas.borrar(id_hist);
                  cargarGrillaConFiltro();
              }
              else
              {
                  lblAviso.Text = "Debe seleccionar una fila de la grilla para poder borrarla.";
              }
          }

          //--------------------------------------//
          //-------- MÉTODOS AUXILIARES ----------//
          //--------------------------------------//


          private void cargarGrillaConFiltro()
          {
              dgvPerros.DataKeyNames = new string[3] { "Código", "IdDueño", "IdRaza" };
              DataTable dt = GestorMascotas.verPerrosConFiltros(getFiltroRaza(), getFiltroHistoriaClinica(), getFiltroNombre());
              dgvPerros.DataSource = dt;
              if (dt.Rows.Count == 0)
                  lblAviso.Text = "No hay resultados para mostrar";
              else
                  lblAviso.Text = "";
              dgvPerros.DataBind();
          }

          // SON PRUEBA.

          /// <summary>
          /// Para tomar los filtros pedidos.
          /// </summary>
          /// <returns></returns>
          private int? getFiltroNombre()
          {

              if (chbDueño.Checked == true)
              {
                  return int.Parse(ddlDueño.SelectedValue);
              }
              else
              {
                  return null;
              }
          }

          private int? getFiltroHistoriaClinica()
          {
              if (chbNumHistClinica.Checked == true)
              {
                  return int.Parse(txtNumHistClinica.Text);
              }
              else
              {
                  return null;
              }
          }

          private int? getFiltroRaza()
          {
              if (chbRaza.Checked == true)
              {
                  return int.Parse(ddlRaza.SelectedValue);
              }
              else
              {
                  return null;
              }
          }

          // Para cargar los combos.
          private void cargarRazas()
          {
              ddlRaza.DataSource = GestorMascotas.getRazas();
              ddlRaza.DataValueField = "Id_Raza";
              ddlRaza.DataTextField = "Denominacion";
              ddlRaza.DataBind();
          }

          private void cargarDueños()
          {
              ddlDueño.DataSource = GestorDueños.verTodos();
              ddlDueño.DataValueField = "Id_Dueño";
              ddlDueño.DataTextField = "Apellido";
              ddlDueño.DataBind();
          }

          protected void btnNuevo_Click(object sender, EventArgs e)
          {
              Session["accion"] = "nuevaMascota";
              Response.Redirect("ABMPerro.aspx");
          }

    }
}